package top.mccat.filesystem.factory;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import top.mccat.filesystem.bean.Account;

/**
 * @author raven
 * Token生成器，用于制造验证令牌
 */
public class TokenFactory {
    /**
     * 获取Token方法
     * @param account 用户对象
     * @return 存储token的信息
     * Algorithm.HMAC256():使用HS256生成token,密钥则是用户的密码，唯一密钥的话可以保存在服务端。
     * withAudience()存入需要保存在token的信息，这里我把用户ID存入token中
     *
     */
    public static String getToken(Account account) {
        String token="";
        if(account.getIsAdmin()){
            if(account.getIsAdmin()){
                token= JWT.create().withKeyId("admin").withAudience(account.getUserName())
                        .sign(Algorithm.HMAC256(account.getPassWord()))
                ;
            }else {
                token= JWT.create().withKeyId("user").withAudience(account.getUserName())
                        .sign(Algorithm.HMAC256(account.getPassWord()))
                ;
            }
        }else {
            token= JWT.create().withAudience(account.getUserName())
                    .sign(Algorithm.HMAC256(account.getPassWord()))
            ;
        }
        return token;
    }
}
